Werte per Excel eingeben
Das hier vorgestellte Programm startet Excel und übergibt Werte. Diese Werte können in Excel bearbeitet werden. Danach werden die Daten ausgelesen und Excel wird über eine Funktion im R/3 beendet.
Mit dem folgenden Programm ist es möglich, Excel zu starten, Daten zu übergeben und zu ändern.
Das Arbeitsblatt wird geschützt, so dass nur die zu ändernden Daten geändert werden können.
Diese Daten werden dann durch das Programm wieder eingelesen und Excel wird beendet.
Quelltext
REPORT ZZ_EXCEL_DEMO.
*******************************************************************
*** ***
*** https://tricktresor.com ***
*** ***
*******************************************************************
*** OLE-Definitionen
INCLUDE OLE2INCL.
*** Variablen
DATA: O_EXCEL TYPE OLE2_OBJECT, ” Excel.Application
O_MAPL TYPE OLE2_OBJECT, ” list of workbooks
O_WORKBOOK TYPE OLE2_OBJECT, ” Workbook
O_MAP TYPE OLE2_OBJECT, ” Mappe
O_ACTIVE_WINDOW TYPE OLE2_OBJECT, ” Active Window
O_ACTIVE_SHEET TYPE OLE2_OBJECT, ” Active Sheet
O_CELL TYPE OLE2_OBJECT, ” Cell
V_ZAHL TYPE P DECIMALS 2, ” Number
V_VALUE(30) TYPE C. ” Cell Value
START-OF-SELECTION.
*** Objekt “Excel” erzeugen
CREATE OBJECT O_EXCEL ‘EXCEL.APPLICATION’.
IF sy-subrc NE 0.
WRITE: / ‘Fehler Excel Create!’.
STOP.
ELSE.
*** Information
WRITE: / ‘|————————|’.
WRITE: / ‘| FERTIG: Werte einlesen |’ HOTSPOT ON.
WRITE: / ‘|————————|’.
*** Sichtbarkeit setzen
SET PROPERTY OF O_EXCEL ‘Visible’ = 1.
*** Excel-Objekt “Arbeitsblatt” erzeugen
CALL METHOD OF O_EXCEL ‘Workbooks’ = O_WORKBOOK.
*** Excel-Objekt “Mappe” erzeugen
CALL METHOD OF O_WORKBOOK ‘Add’ = O_MAP.
ENDIF.
*** Werte einfügen
PERFORM FILL_CELL
USING: 1 1 1 ‘Bitte Werte eingeben.’ &
‘Zum Beenden “FERTIG” im SAPGUI anklicken!’,
2 1 1 ‘Länge:’,
3 1 1 ‘Breite:’,
4 1 1 ‘Höhe:’,
2 2 0 ’10’,
3 2 0 ’20’,
4 2 0 ’30’.
*** Aktives Arbeitsblatt ermitteln
CALL METHOD OF O_EXCEL ‘ActiveSheet’ = O_ACTIVE_SHEET.
*** Blattschutz setzen
CALL METHOD OF O_ACTIVE_SHEET ‘Protect’
EXPORTING #1 = SPACE
#2 = 1 “Drawing Objects
#3 = 1 “Contents
#4 = 1. “Scenarios
AT LINE-SELECTION.
*** Listindex zurücksetzen, damit nach Anzeige der Werte nicht
*** wieder der FERTIG-Button angezeigt wird.
SY-LSIND = 0.
*** Wert “Länge” auslesen
PERFORM GET_CELLVALUE USING 2 2 V_VALUE.
WRITE: / ‘Länge: ‘, V_VALUE.
*** Wert “Breite” auslesen
PERFORM GET_CELLVALUE USING 3 2 V_VALUE.
WRITE: / ‘Breite:’, V_VALUE.
*** Wert “Höhe” auslesen
PERFORM GET_CELLVALUE USING 4 2 V_VALUE.
WRITE: / ‘Höhe: ‘, V_VALUE.
* Excel beenden
*———————————————————————–
* see http://support.microsoft.com/default.aspx?scid=kb;de;503541
* Close without saving
* get active window
CALL METHOD OF O_EXCEL ‘ACTIVEWINDOW’ = O_ACTIVE_WINDOW.
* close active_window without saving
CALL METHOD OF O_ACTIVE_WINDOW ‘CLOSE’
EXPORTING #1 = 0.
* close Excel
CALL METHOD OF O_EXCEL ‘QUIT’.
* Free Objects
FREE OBJECT O_WORKBOOK.
FREE OBJECT O_EXCEL.
FREE OBJECT O_MAPL.
FREE OBJECT O_MAP.
FREE OBJECT O_ACTIVE_WINDOW.
*———————————————————————*
* FORM FILL_CELL *
*———————————————————————*
FORM FILL_CELL USING I J LOCK VAL.
*** Zelle ansprechen
CALL METHOD OF O_EXCEL ‘Cells’ = O_CELL
EXPORTING
#1 = I “Zeile
#2 = J. “Spalte
*** Zellwert setzen
SET PROPERTY OF O_CELL ‘Value’ = VAL.
SET PROPERTY OF O_CELL ‘Locked’ = LOCK.
ENDFORM.
*———————————————————————*
* FORM GET_CELLVALUE *
*———————————————————————*
FORM GET_CELLVALUE USING I J VAL.
* Zelle, aus der Ergebnis gelesen wird
CALL METHOD OF O_EXCEL ‘Cells’ = O_CELL
EXPORTING
#1 = I “Zeile
#2 = J. “Spalte
* Zellinhalt lesen
GET PROPERTY OF O_CELL ‘Value’ = V_VALUE.
IF V_VALUE CO ‘0123456789. ‘.
V_ZAHL = V_VALUE.
VAL = V_ZAHL.
ELSE.
VAL = V_VALUE.
ENDIF.
* Objekt freigeben
FREE OBJECT O_CELL.
ENDFORM.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024